import pygame
#游戏窗口区域（矩形区域）
SCREEN_RECT = pygame.Rect(0,0,480,700)
class GameSprite(pygame.sprite.Sprite):
    """游戏精灵类"""
    res_path = "./res/images/"                              #图片资源路径
    def __init__(self,image_name,speed,*groups):
        """构造方法
        :param image_name： 要加载的图片文件名
        :param speed：移动速度，0 表示静止
        :param groups：要添加到的精灵组，不传值则不添加
        """

        super().__init__(*groups)
        #图像
        self.image = pygame.image.load(self.res_path + image_name)
        self.rect = self.image.get_rect()                   #矩形区域，默认在左上角
        self.speed = speed                                  #移动速度
    def update(self, *args):
        """更新精灵未知，默认在垂直方向移动"""
        self.rect.y += self.speed
class Background(GameSprite):
    """"背景精灵"""
    def __init__(self,is_alt,*groups):
        #调用父类方法实现精灵的创建
        super().__init__("background.png",1,*groups)
        #判断是否有另一个精灵，如果是，需要设置初始位置
        if is_alt:
            self.rect.y = -self.rect.h                      #设置到游戏窗口正上方
    def update(self, *args):
        #调用父类的方法实现向下运动
        super().update(*args)                               #向下移动
        #判断是否移除屏幕，如果移除屏幕，将图像设置到屏幕上方
        if self.rect.y >= self.rect.h:
            self.rect.y = -self.rect.h
class StatusButton(GameSprite):
    """状态按钮类"""
    def __init__(self,image_names, *groups):
         """构造方法
         :param image_names:要加载的图像名称列表
         :param groups: 要添加到的精灵组
         """
         super().__init__(image_names[0], 0, *groups)
         #加载图像
         self.images = [pygame.image.load(self.res_path + name)
                       for name in image_names]
    def switch_status(self,is_pause):
         """切换状态
         :param is_pause: 是否暂停
         """
         self.image = self.images[1 if is_pause else 0]
